notebook: Assume tab allocations always change
authorBenjamin Otte <otte@redhat.com>
Fri, 25 Dec 2015 01:12:15 +0000 (02:12 +0100)
committerBenjamin Otte <otte@redhat.com>
Mon, 11 Jan 2016 16:05:23 +0000 (17:05 +0100)
This causes more redraws, but saves a bunch of code.

gtk/gtknotebook.c

index d22a491780d7178f0dddf2a0257b28f7b90fd783..c3e94a29dd856e51851fa0d2f3071e78e448544b 100644 (file)
@@ -311,11 +311,6 @@ struct _GtkNotebookPage
   guint reorderable  : 1;
   guint detachable   : 1;
 
-  /* if true, the tab label was visible on last allocation; we track this so
-   * that we know to redraw the tab area if a tab label was hidden then shown
-   * without changing position */
-  guint tab_allocated_visible : 1;
-
   GtkRequisition requisition;
   GtkAllocation allocation;
 
@@ -551,7 +546,7 @@ static void gtk_notebook_draw_arrow          (GtkNotebook      *notebook,
 
 /*** GtkNotebook Size Allocate Functions ***/
 static void gtk_notebook_pages_allocate      (GtkNotebook      *notebook);
-static gboolean gtk_notebook_page_allocate   (GtkNotebook      *notebook,
+static void gtk_notebook_page_allocate       (GtkNotebook      *notebook,
                                               GtkNotebookPage  *page);
 static void gtk_notebook_calc_tabs           (GtkNotebook      *notebook,
                                               GList            *start,
@@ -5883,7 +5878,6 @@ gtk_notebook_pages_allocate (GtkNotebook *notebook)
   gboolean showarrow = FALSE;
   gint tab_space, min, max, remaining_space;
   gint expanded_tabs;
-  gboolean tab_allocations_changed = FALSE;
 
   if (!priv->show_tabs || !gtk_notebook_has_current_page (notebook))
     return;
@@ -5914,38 +5908,31 @@ gtk_notebook_pages_allocate (GtkNotebook *notebook)
 
   while (children)
     {
-      if (gtk_notebook_page_allocate (notebook, GTK_NOTEBOOK_PAGE (children)))
-        tab_allocations_changed = TRUE;
+      gtk_notebook_page_allocate (notebook, GTK_NOTEBOOK_PAGE (children));
       children = children->next;
     }
 
   if (!priv->first_tab)
     priv->first_tab = priv->children;
 
-  if (tab_allocations_changed)
-    gtk_css_gadget_queue_draw (priv->tabs_gadget);
+  gtk_css_gadget_queue_draw (priv->tabs_gadget);
 }
 
-static gboolean
+static void
 gtk_notebook_page_allocate (GtkNotebook     *notebook,
                             GtkNotebookPage *page)
 {
   GtkWidget *widget = GTK_WIDGET (notebook);
-  GtkAllocation child_allocation, label_allocation;
+  GtkAllocation child_allocation;
   GtkRequisition tab_requisition;
   GtkStyleContext *context;
   GtkPositionType tab_pos = get_effective_tab_pos (notebook);
-  gboolean tab_allocation_changed;
-  gboolean was_visible = page->tab_allocated_visible;
   GtkBorder tab_padding;
 
   if (!page->tab_label ||
       !gtk_widget_get_visible (page->tab_label) ||
       !gtk_widget_get_child_visible (page->tab_label))
-    {
-      page->tab_allocated_visible = FALSE;
-      return was_visible;
-    }
+    return;
 
   context = gtk_widget_get_style_context (widget);
 
@@ -6007,23 +5994,9 @@ gtk_notebook_page_allocate (GtkNotebook     *notebook,
       g_assert_not_reached ();
     }
 
-  gtk_widget_get_allocation (page->tab_label, &label_allocation);
-  tab_allocation_changed = (child_allocation.x != label_allocation.x ||
-                            child_allocation.y != label_allocation.y ||
-                            child_allocation.width != label_allocation.width ||
-                            child_allocation.height != label_allocation.height);
-
   gtk_widget_size_allocate (page->tab_label, &child_allocation);
 
-  if (!was_visible)
-    {
-      page->tab_allocated_visible = TRUE;
-      tab_allocation_changed = TRUE;
-    }
-
   gtk_style_context_restore (context);
-
-  return tab_allocation_changed;
 }
 
 static void